package com.uade.business;

import java.util.Date;
import java.util.List;

import javax.naming.NamingException;

import com.uade.model.*;
import com.uade.model.exceptions.*;
import com.uade.facade.*;


public class BusinessDelegateImpl implements BusinessDelegate{

	private Facade facade;
	
	public static BusinessDelegate getInstanace() throws NamingException{
		return new BusinessDelegateImpl();
	}
	
	private BusinessDelegateImpl() throws NamingException{
		facade = ServiceLocator.getRemoteFacadeB();
	}

	// Usuario
	@Override
	public Usuario loguearse(String nombre, String password) throws LoginException{
		return facade.loguearse(nombre, password);
	}
	
	@Override
	public void altaUsuario(Usuario usuario){
		facade.altaUsuario(usuario);
	}

	// Articulo
	@Override
	public List<Articulo> listarArticulosPorRanking() throws NotFoundException{
		return facade.listarArticulosPorRanking();
	}
	
	@Override
	public List<Articulo> busqueda(String nombre,String categoria) throws NotFoundException{
		return facade.busqueda(nombre,categoria);
	}
	
	@Override
	public Articulo busqueda(int id) throws NotFoundException{
		return facade.busqueda(id);
	}
	
	@Override
	public void modificarConfiguracion(Configuracion configuracion){
		facade.modificarConfiguracion(configuracion);
	}
	
	@Override
	public List<Configuracion> obtenerConfiguraciones(){
		return facade.obtenerConfiguraciones();
	}
	
	@Override
	public List<Compra> consultaCompras(int idUsuario){
		return facade.consultaCompras(idUsuario);
	}	
	
	@Override
	public void actualizarRanking(Ranking ranking) throws NotFoundException{
		facade.actualizarRanking(ranking);
	}

	@Override
	public String recepcionEstado(String estado, int idCompra) {
		return facade.recepcionEntrega(estado, idCompra);
	}
	
	@Override
	public void checkOutCompra(Compra compr) throws BusinessException, LogisticaMonitoreoException
	{
		facade.checkOutCompra(compr);
	}
	
	@Override
	public void logearEvento(Evento evento) throws BusinessException, LogisticaMonitoreoException{
		facade.enviarLogLogisticaMonitoreo(evento);
	}
}
